// 输入文字最大的个数
const MAX_WORDS_NUM = 140
    // 最大上传图片数量
const MAX_IMG_NUM = 9

const db = wx.cloud.database()
    // 输入的文字内容
let content = ''
let userInfo = {}
Page({

    /**
     * 页面的初始数据
     */
    data: {
        // 输入的文字个数
        wordsNum: 0,
        footerBottom: 0,
        images: [],
        selectPhoto: true, // 添加图片元素是否显示
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function(options) {
        console.log(options)
        userInfo = options
    },

    onInput(event) {
        // console.log(event.detail.value)
        let wordsNum = event.detail.value.length

        if (wordsNum >= MAX_WORDS_NUM) {

            wordsNum = `最大字数为${MAX_WORDS_NUM}`
        }
        this.setData({
            wordsNum
        })
        content = event.detail.value
    },

    onFocus(event) {
        // 模拟器获取的键盘高度为0
        // console.log(event)
        this.setData({
            footerBottom: event.detail.height,
        })
    },
    onBlur() {
        this.setData({
            footerBottom: 0,
        })
    },

    onChooseImage() {
        // 还能再选几张图片
        let max = MAX_IMG_NUM - this.data.images.length

        wx.chooseImage({
            count: max,

            sizeType: ['original', 'compressed'],

            sourceType: ['album', 'camera'],

            success: (res) => {

                console.log(res)

                this.setData({
                        images: this.data.images.concat(res.tempFilePaths)
                    })
                    // 还能再选几张图片
                max = MAX_IMG_NUM - this.data.images.length

                this.setData({

                    selectPhoto: max <= 0 ? false : true
                })
            },
        })
    },
    onDelImage(event) {
        this.data.images.splice(event.target.dataset.index, 1)

        this.setData({

            images: this.data.images
        })
        if (this.data.images.length == MAX_IMG_NUM - 1) {

            this.setData({

                selectPhoto: true,
            })
        }
    },

    onPreviewImage(event) {
        // 6/9
        wx.previewImage({

            urls: this.data.images,

            current: event.target.dataset.imgsrc,
        })
    },

    send() {
        // 2、数据 -> 云数据库
        // 数据库：内容、图片fileID、openid、昵称、头像、时间
        // 1、图片 -> 云存储 fileID 云文件ID

        if (content.trim() === '') {

            wx.showModal({

                title: '请输入内容',
                content: '',
            })
            return
        }

        wx.showLoading({
            title: '发布中',
            mask: true,
        })

        let promiseArr = []
        let fileIds = []
            // 图片上传
        for (let i = 0, len = this.data.images.length; i < len; i++) {

            let p = new Promise((resolve, reject) => {

                let item = this.data.images[i]
                    // 文件扩展名
                let suffix = /\.\w+$/.exec(item)[0]

                wx.cloud.uploadFile({

                    cloudPath: 'blog/' + Date.now() + '-' + Math.random() * 1000000 + suffix,

                    filePath: item,

                    success: (res) => {

                        console.log(res.fileID)

                        fileIds = fileIds.concat(res.fileID)

                        resolve()
                    },
                    fail: (err) => {

                        console.error(err)

                        reject()
                    }
                })
            })
            promiseArr.push(p)
        }
        // 存入到云数据库
        Promise.all(promiseArr).then((res) => {

            db.collection('blog').add({

                data: {
                    ...userInfo,
                    content,
                    img: fileIds,
                    createTime: db.serverDate(), // 服务端的时间
                }
            }).then((res) => {
                wx.hideLoading()
                wx.showToast({
                    title: '发布成功',
                })

                // 返回blog页面，并且刷新
                wx.navigateBack()

                const pages = getCurrentPages()

                // console.log(pages)
                // 取到上一个页面
                const prevPage = pages[pages.length - 2]

                prevPage.onPullDownRefresh()

            })
        }).catch((err) => {
            wx.hideLoading()
            wx.showToast({
                title: '发布失败',
            })
        })
    },
    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady: function() {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow: function() {

    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide: function() {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload: function() {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh: function() {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom: function() {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage: function() {

    }
})